home *** CD-ROM | disk | FTP | other *** search
/ PC Gamer (Italian) 30 / PC Gamer IT CD 30 1-2.iso / MOTS / GAMEDATA / RESOURCE / JKMRES.GOO / cog_00_door.cog < prev    next >
Text File  |  1998-02-25  |  3KB  |  113 lines

  1. # Jedi Knight Cog Script
  2. #
  3. # 00_Door.cog
  4. #
  5. # Generic Door Script
  6. #
  7. # [IS]
  8. #
  9. # (C) 1997 LucasArts Entertainment Co. All Rights Reserved
  10. # ========================================================================================
  11.  
  12. symbols
  13.     message    startup        
  14.     message    activate    
  15.     message    arrived        
  16.     message    timer        
  17.     message    blocked        
  18.  
  19.     thing        door0        linkid=0 mask=0x405
  20.     thing        door1        linkid=1 mask=0x405
  21.     thing        door2        linkid=2 mask=0x405
  22.     thing        door3        linkid=3 mask=0x405
  23.  
  24.     float        moveSpeed=8.0
  25.     float        sleepTime=2.0
  26.     float        lightValue=0.5
  27.  
  28.     sector    doorSector    local
  29.     int        numDoors=0    local
  30.     int        doorStatus    local
  31.     int        moveStatus    local
  32.     int        i                local
  33. end
  34.  
  35. # ========================================================================================
  36.  
  37. code
  38.  
  39. startup:
  40.     for (i=0; i<=3; i=i+1)
  41.         if (door0[i] >= 0) numDoors = numDoors + 1;
  42.  
  43.     doorSector = GetThingSector(door0);
  44.     SetSectorAdjoins(doorSector, 0);
  45.     SetSectorLight(doorSector, lightValue, 0.0);        // add some light to door sector
  46.     return;
  47.  
  48. # ........................................................................................
  49.  
  50. activate:
  51.     call CheckStatus;
  52.     if (moveStatus) return;
  53.     if (doorStatus == 0) {                    // all pieces are at frame 0
  54.         SetSectorAdjoins(doorSector, 1);
  55.         call OpenDoors;
  56.     }
  57.     return;
  58.  
  59. # ........................................................................................
  60.  
  61. arrived:
  62.     call CheckStatus;
  63.     if (moveStatus) return;
  64.     if (doorStatus == numDoors) {                // all pieces are at frame 1
  65.         SetTimer(sleepTime);
  66.     } else if (doorStatus == 0) {                // all pieces are at frame 0
  67.         SetSectorAdjoins(doorSector, 0);
  68.     }
  69.     return;
  70.  
  71. # ........................................................................................
  72.  
  73. blocked:
  74.     call OpenDoors;
  75.     return;
  76.  
  77. # ........................................................................................
  78.  
  79. timer:
  80.     call CloseDoors;
  81.     return;
  82.  
  83. # ........................................................................................
  84.  
  85. OpenDoors:
  86.     for (i=0; i<=3; i=i+1)
  87.         if (door0[i] >= 0) MoveToFrame(door0[i], 1, moveSpeed);
  88.     return;
  89.  
  90. # ........................................................................................
  91.  
  92. CloseDoors:
  93.     for (i=0; i<=3; i=i+1)
  94.         if (door0[i] >= 0) MoveToFrame(door0[i], 0, moveSpeed);
  95.     return;
  96.  
  97. # ........................................................................................
  98.  
  99. CheckStatus:
  100.     moveStatus = 0;
  101.     doorStatus = 0;
  102.  
  103.     for (i=0; i<=3; i=i+1) {
  104.         if (door0[i] >= 0) {
  105.             moveStatus = moveStatus + IsThingMoving(door0[i]);
  106.             doorStatus = doorStatus + GetCurFrame(door0[i]);
  107.         }
  108.     }
  109.     return;
  110.  
  111. end
  112.  
  113.